package com.stu.day12;

/**
 * 泛型类的继承
 *
 * @author zy
 * @date 2025/2/10 16:01
 */
public class GenericExtendsDemo {
}

class Sup<T> {
}

//1. 子类完全保留父类的泛型 - 父类没有明确泛型的具体的类型
class Sub<T> extends Sup<T> {

}

//3. 子类可以拓展自己的泛型
class Sub03<T, K> extends Sup<T> {

}

//2. 部分保留,父类部分确定明确类型
class Sup02<K, V> {

}

class Sub02<K> extends Sup02<K, Integer> {

}

//4. 父类全部明确类型
class Sub04 extends Sup<Teacher> {

}

//5. 如果全部没有指定,采用的是Object
interface A<T> {
    void save(T t);
}

class Aimpl implements A {

    @Override
    public void save(Object o) {

    }
}

class TestDemo {
    public static void main(String[] args) {
        //1. 父类没有明确
        Sup<String> str = new Sub<>();
        Sup<Integer> integer = new Sub<>();

        //2. 父类明确了
        Sup<Teacher> s = new Sub04();
        //Sup<String> s2 = new Sub04();//编译是错误的

    }
}